package cn.edu.jxau.test;

import java.util.Arrays;
import java.util.Objects;

/**
 * @author Fudashi
 */
public class Main {

	public static void main(String[] args) {

		int[] a = new int[] { 12, 43, 65, 87, 0, 0, 0 };
		int[] b = new int[] { 32, 45, 76 };
		merge(a, b);
		System.out.println(Arrays.toString(a));
	}

	private static void merge(int[] a, int[] b) {

		Objects.requireNonNull(a, "参数a不能为null");
		Objects.requireNonNull(b, "参数b不能为null");
		int aLen = 0;// a的真实长度
		for (int i = 0; i < a.length && a[i] != 0; i++) {
			aLen++;
		}
		int bLen = 0;// b的真实长度
		for (int i = 0; i < b.length && b[i] != 0; i++) {
			bLen++;
		}
		if (aLen + bLen > a.length) {
			throw new IllegalArgumentException("数组a没有足够的空间存储数组b中的元素");
		}
		int p = aLen + bLen - 1;
		int p1 = aLen - 1;
		int p2 = bLen - 1;
		while (p1 >= 0 && p2 >= 0) {
			if (a[p1] <= b[p2]) {
				a[p--] = b[p2--];
			} else {
				a[p--] = a[p1--];
			}
		}
		while (p2 >= 0) { // 数组a的元素已全部就位，就把剩余的数组b中的元素放入a中
			a[p--] = b[p2--];
		}
	}
}
